#coding:utf-8

#ultima versão funcional sem condicao de armijo

from Constants import *
import os,pygame,Image
from pygame.locals import *

def load_surface_from_image(filename, colorkey=None):
	try:
		image = pygame.image.load(filename)
	except pygame.error:
		print ('Cannot load image:', filename)
		raise SystemExit(str(geterror()))
	image = image.convert()
	if colorkey is not None:
		if colorkey is -1:
			colorkey = image.get_at((0,0))
		image.set_colorkey(colorkey, RLEACCEL)
	return image, image.get_rect()
	
def load_image(name):
	img = Image.open(name)
	return img

def desenhar_reta_curva(pt1,pt2,surf,cor_curva,cor_ponto=Colors.WHITE):
	
	pygame.draw.line(surf, cor_curva, pt1,pt2 )		
	pygame.draw.circle(surf,cor_ponto,pt1,1)
	pygame.draw.circle(surf,cor_ponto,pt2,1)
	
def desenhar_reta_snake(pt1,pt2,surf,cor,draw_point=True):	
	'''
		Muitas vezes os pontos vir�o com parte decimal, mas como o sistema de imagem n�o � cont�nuo, preciso
		tranformar estes dados para inteiros, por�m, sem alterar o valor fracion�rio do ponto em si.
		
		Ao fazer:
		
		pt1.x = int( round(pt1.x) ) eu estou alterando o valor x da instancia. Parece que o par�metro � passado
									por refer�ncia
		
	'''
	p1_x = int( round(pt1.x) )
	p1_y = int( round(pt1.y) )
	
	p2_x = int( round(pt2.x) )
	p2_y = int( round(pt2.y) )	


	pygame.draw.line(surf, cor, (p1_x,p1_y),(p2_x,p2_y) )	
	
	if draw_point:
		pygame.draw.circle(surf,pt1.color,(p1_x,p1_y),1)
		pygame.draw.circle(surf,pt2.color,(p2_x,p2_y),1)

	

def salvar_imagem(surf,local):
	pygame.image.save(surf,local)
	
	